<?php
/**
 * 代金券服务类
 * 
 * @author Kim
 */
class CashCouponService extends Service {

	/**
  	 * 优惠券检查方法
  	 * @param string $passcode 待检查的代金券码
  	 * @return 返回标准array格式数据，array[data]-代金券详情+代金券码。
  	 */
  	function doCheck($passcode,$check_ruledata=null){
  		$result['status'] = 0;

  		if(empty($passcode)){$result['msg'] = '优惠券码错误！';return $result;}
  		
  		$cashcoupon = model('Cashcoupon')->getInfoByCode($passcode);
  		//dump($cashcoupon);
  		if(empty($cashcoupon)||empty($cashcoupon['id'])){$result['msg'] = '优惠券不存在！';return $result;}
  		if($cashcoupon['is_used']!='N'){$result['msg'] = '优惠券已使用！';return $result;}
  		
  		if(empty($cashcoupon['baseinfo'])||empty($cashcoupon['baseinfo']['id'])) {$result['msg'] = '优惠券不存在！';return $result;}
  		if($cashcoupon['baseinfo']['stime']>time()) {$result['msg'] = '使用日期未到，不可用！';return $result;}
  		if($cashcoupon['baseinfo']['etime']<time()) {$result['msg'] = '使用日期已过，不可用！';return $result;}
  		
  		$rule_data = unserialize($cashcoupon['baseinfo']['rule_data']);
  		$r_min_amount 	= intval(substr( $rule_data['min_amount'], 2 ));
  		$r_partner_id 	= intval(substr( $rule_data['partner_id'], 2 ));
  		$r_goods_id 	= intval(substr( $rule_data['goods_id'], 2 ));
  		
  		if($cashcoupon['baseinfo']['sort_code']=='cashcoupon_public'){
			
		}else if($cashcoupon['baseinfo']['sort_code']=='cashcoupon_partner'){
			if(empty($r_partner_id) || $r_partner_id!=$check_ruledata['partner_id']){
				$result['msg'] = '不能用于该商品！';
			}
		}else if($cashcoupon['baseinfo']['sort_code']=='cashcoupon_goods'){
			if(empty($r_goods_id) || $r_goods_id!=$check_ruledata['goods_id']){
				$result['msg'] = '不能用于该商品！';
			}
		}else{
			$result['msg'] = '错误的优惠券码' ;
		}
  		
		if(empty($result['msg'])){
  			if( $r_min_amount>0 && $r_min_amount> $check_ruledata['amount'] ) {
  				$result['msg'] = '需大于'.$r_min_amount.'元才可用！';return $result;
  			}
		}else{
			return $result;
		}
  		$cashcoupon['baseinfo']['passcode']=$passcode;
  		$result['status'] = 1;
		$result['msg'] = '可以使用！';
		$result['data']=$cashcoupon['baseinfo'];
		return $result;
  	}
  	
	/**
  	 * 优惠券将被使用。将代金券标记为代使用。
  	 * 流程：	1。检查代金券是否可以使用。
  	 * 			2。将代金券标记为待使用。
  	 * 			3。
  	 * @param string $ccpcode 待检查的代金券码
  	 * @return 返回标准array格式数据，array[data]-代金券详情+代金券码。
  	 */
	public function doUse($passcode,$ruledata=null){
  		$result=$this->doCheck($passcode,$ruledata);
  		
  		if($result['status']==1){
  			if($result['data']['sort_code']=='cashcoupon_public'){
  				//如果为通用优惠券则不设置，已使用状态。
  				$result['msg']=='使用优惠券成功！';
  				M('Cashcoupon')->setInc('used_no',array('id'=>$result['data']['id']));
  			}else{
	  			$no = M('CashcouponCode')->where(array('passcode'=>$passcode,'is_used'=>array('NEQ','Y')))->save(array('is_used'=>'Y','mtime'=>time()));
	  			if(!$no){
	  				$result['status']=0;
	  				$result['msg']=='使用优惠券失败！';
	  			}else{
	  				M('Cashcoupon')->setInc('used_no',array('id'=>$result['data']['id']));
	  			}
  			}
  		}

		return $result;
  	}
  	
  	
	/**
  	 * 取消使用优惠券，未确认订单前。
  	 
	public function doCancelWillBeUsed(){
  		$_SESSION['order_data']['cashcoupon']=null;
  		$result['status']=1;
  		$result['msg']="取消成功！";
		exit(json_encode($result));
  	}
  	*/
	public function run() {

	}

	public function _start() {

	}

	public function _stop() {

	}

	public function _install() {

	}

	public function _uninstall() {

	}
}